package com.employment.dto;

import lombok.Data;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 职位创建/更新DTO
 * 
 * @author Employment System
 * @since 1.0.0
 */
@Data
public class JobPositionDTO {

    /**
     * 职位ID（更新时需要）
     */
    private Long jobId;

    /**
     * 公司ID
     */
    @NotNull(message = "公司ID不能为空")
    private Long companyId;

    /**
     * 职位标题
     */
    @NotBlank(message = "职位标题不能为空")
    private String title;

    /**
     * 职位类别
     */
    private String category;

    /**
     * 职位描述
     */
    @NotBlank(message = "职位描述不能为空")
    private String description;

    /**
     * 职位要求
     */
    private String requirements;

    /**
     * 工作职责
     */
    private String responsibilities;

    /**
     * 技能要求
     */
    private String skillsRequired;

    /**
     * 最低薪资
     */
    private BigDecimal salaryMin;

    /**
     * 最高薪资
     */
    private BigDecimal salaryMax;

    /**
     * 薪资类型：1月薪，2年薪，3日薪，4时薪
     */
    private Integer salaryType;

    /**
     * 工作经验要求
     */
    private String workExperience;

    /**
     * 学历要求
     */
    private String education;

    /**
     * 工作类型：1全职，2兼职，3实习，4远程
     */
    private Integer workType;

    /**
     * 工作地点
     */
    private String location;

    /**
     * 省份
     */
    private String province;

    /**
     * 城市
     */
    private String city;

    /**
     * 区县
     */
    private String district;

    /**
     * 详细地址
     */
    private String address;

    /**
     * 福利待遇
     */
    private String welfare;

    /**
     * 职位标签（JSON格式）
     */
    private String tags;

    /**
     * 紧急程度：0普通，1紧急，2非常紧急
     */
    private Integer urgency;

    /**
     * 截止时间
     */
    private LocalDateTime deadline;

    /**
     * 创建人
     */
    private Long createdBy;
}